package com.clear.honghefinance.biz.modules.system.menu.service;

import com.clear.honghefinance.biz.modules.system.menu.domain.entity.SysMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.clear.honghefinance.biz.modules.system.menu.domain.dto.CreateMenuDTO;
import com.clear.honghefinance.biz.modules.system.menu.domain.dto.DeleteMenuDTO;
import com.clear.honghefinance.biz.modules.system.menu.domain.dto.UpdateMenuDTO;
import com.clear.honghefinance.biz.modules.system.menu.domain.vo.ListTreeMenuVO;
import com.clear.honghefinance.biz.modules.system.menu.domain.vo.ListTreeSelectMenuVO;

import java.util.List;

/**
 * <p>
 * 系统菜单 服务类
 * </p>
 *
 * @author 程序员clear
 * @since 2024-08-15
 */
public interface ISysMenuService extends IService<SysMenu> {

    /**
     * 创建菜单
     *
     * @param dto req
     * @return 成功true、失败false
     */
    boolean create(CreateMenuDTO dto);

    /**
     * 修改菜单
     *
     * @param dto req
     * @return 成功true、失败false
     */
    boolean update(UpdateMenuDTO dto);

    /**
     * 删除菜单
     *
     * @param dto req
     * @return 成功true、失败false
     */
    boolean delete(DeleteMenuDTO dto);

    /**
     * 获取菜单列表 树形展示
     *
     * @param name
     * @return
     */
    List<ListTreeMenuVO> listTreeMenu(String name);

    /**
     * 树形选择菜单列表
     *
     * @return
     */
    List<ListTreeSelectMenuVO> listTreeSelectMenu();

    /**
     * 根据id获取菜单
     *
     * @param id 菜单id
     * @return
     */
    SysMenu getMenuById(int id);

    /**
     * 根据id查询菜单列表
     *
     * @param menuIds 菜单id列表
     * @return
     */
    List<SysMenu> listMenuByIds(List<Integer> menuIds);

    /**
     * 获取所有菜单列表
     * @return
     */
    List<SysMenu> listMenu();
}
